package com.onpositive.collections;

import java.io.Serializable;
import java.util.List;

import com.onpositive.notes.model.ITemplateModel;

public interface IObjectCollection extends Serializable {
	
	String getName() ;
	
	List<ICollectionMember<?>> getMembersByFirstWord( String keyWord ) ;
	
	ICollectionMember<?> getMemberByName( String name ) ;
	
	List<ICollectionMember<?>> getAllMembers() ;
	
	List<ITemplateModel<?>> getAffectingTemplates() ;
	
	List<ICollectionDelta<?>> getCompleteHistory() ;
	
	List<ICollectionDelta<?>> getMemberHistory( ICollectionMember<?> member ) ;
	
	ICollectionMember<?> getMemberById( int id ) ;
	
	int registerDelta( ICollectionDelta<?> delta ) ;//return id
	
	int getId() ;
	
	void setId( int id ) ;
	
	int addNewMember( ICollectionMember<?> member ) ;
	
	void removeDelta(  int deltaId ) ;
	
	Object getCurrentValue( ICollectionMember<?> member ) ;
}
